package LeetCode;

//
// Created by ✎﹏ℳ๓独赏☆独醉 on 2024/6/13.
//
//https://leetcode.cn/problems/powx-n/description/
public class 幂函数 {
    public static void main(String[] args) {
        System.out.println(myPow(2.00000,-2147483648));
    }
    public static double myPow(double x, int n){
        if(n == 0)return 1;
        if(n < 0){
            return 1 / (x * myPow(x,-(n + 1)));
        }
        if(n % 2 == 0){
//            return myPow(x,n / 2) * myPow(x,n/2); 若这样写，则需调用两次函数,时间复杂度和空间复杂度会大幅度升高
            double temp = myPow(x,n / 2);
            return temp * temp;
        }
        return x * myPow(x,n - 1);
    }

//    public static double myPow(double x, int n) {
//        if(n == 0)return 1;
//        if(n == 1)return x;
//        if(n == -1)return 1/x;
//        if(n < 0){
//            n = -n;
//            x = 1/x;
//        }
//        double temp = x;
//        for (int i = 1; i < n; i++) {
//            x *= temp;
//        }
//        return x;
//    }
}
